package View;

import java.awt.BorderLayout;
import java.awt.Dialog.ModalExclusionType;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JComboBox;

import Controller.ControladorCategoria;
import Controller.ControladorProducto;
import Model.Category;
import Model.Supplier;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JTextArea;

public class GestionarProductos extends JFrame {

	private JPanel contentPane;
	private JTextField textFieldNom;
	private JTextField textFieldPro;
	private JTextField textFieldIva;
	private JTextField textFieldPrec;
	private JTextField textFildCan;
	protected Supplier proveedorSeleccionado;
	private JTextArea textDesc;
	private JComboBox<Category> cbxCategoria;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					GestionarProductos frame = new GestionarProductos();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public GestionarProductos() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JPanel panel = new JPanel();
		panel.setBounds(10, 11, 414, 240);
		contentPane.add(panel);
		panel.setLayout(null);

		JButton buttonAdd = new JButton("Add");
		buttonAdd.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				ControladorProducto cont = new ControladorProducto();
				Category cat = (Category)cbxCategoria.getSelectedItem();
				cont.insertar(textFieldNom.getText(), textDesc.getText(),textFieldPro.getText(),Double.parseDouble( textFieldPrec.getText())
						      ,Double.parseDouble(textFieldIva.getText()), textFildCan.getText(), cat);
				GestionarProductos.this.dispose();
			}
		});
		buttonAdd.setBounds(60, 206, 72, 23);
		panel.add(buttonAdd);

		JLabel lblNombre = new JLabel("Nombre");
		lblNombre.setBounds(26, 11, 46, 14);
		panel.add(lblNombre);

		JLabel lblDescripcion = new JLabel("Descripcion");
		lblDescripcion.setBounds(26, 36, 61, 14);
		panel.add(lblDescripcion);

		JLabel lblProveedor = new JLabel("Proveedor");
		lblProveedor.setBounds(26, 84, 61, 14);
		panel.add(lblProveedor);

		JLabel lblCategoria = new JLabel("Categoria");
		lblCategoria.setBounds(26, 109, 61, 14);
		panel.add(lblCategoria);

		JLabel lblPrecio = new JLabel("Precio");
		lblPrecio.setBounds(26, 134, 46, 14);
		panel.add(lblPrecio);

		JLabel lblIva = new JLabel("Iva");
		lblIva.setBounds(253, 134, 46, 14);
		panel.add(lblIva);

		JLabel lblCantidad = new JLabel("Cantidad");
		lblCantidad.setBounds(26, 161, 46, 14);
		panel.add(lblCantidad);

		textFieldNom = new JTextField();
		textFieldNom.setBounds(99, 8, 197, 20);
		panel.add(textFieldNom);
		textFieldNom.setColumns(10);

		textFieldPro = new JTextField();
		textFieldPro.setBounds(99, 81, 213, 20);
		panel.add(textFieldPro);
		textFieldPro.setColumns(10);

		textFieldIva = new JTextField();
		textFieldIva.setBounds(300, 131, 69, 20);
		panel.add(textFieldIva);
		textFieldIva.setColumns(10);

		textFieldPrec = new JTextField();
		textFieldPrec.setBounds(100, 131, 61, 20);
		panel.add(textFieldPrec);
		textFieldPrec.setColumns(10);

		textFildCan = new JTextField();
		textFildCan.setBounds(100, 159, 61, 20);
		panel.add(textFildCan);
		textFildCan.setColumns(10);

		
		cbxCategoria = new JComboBox<Category>();
		cbxCategoria.setBounds(101, 106, 162, 20);
		cbxCategoria.setModel(new DefaultComboBoxModel<Category>(
				new ControladorCategoria().cargarTodos().toArray(new Category[0])));
		panel.add(cbxCategoria);

		JButton btnS = new JButton("S");
		btnS.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				ListadoProveedor pro = new ListadoProveedor(
						GestionarProductos.this);
				pro.setModal(true);
				pro.setVisible(true);
				proveedorSeleccionado = pro.getProveedorSelecionado();
				textFieldPro.setText(proveedorSeleccionado.getNombre());
			}
		});
		btnS.setBounds(318, 80, 51, 23);
		panel.add(btnS);
		
		textDesc = new JTextArea();
		textDesc.setText((String) null);
		textDesc.setBounds(101, 37, 211, 36);
		panel.add(textDesc);
		
		JButton btnClose = new JButton("Close");
		btnClose.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
			GestionarProductos.this.dispose();
			}
		});
		btnClose.setBounds(142, 206, 72, 23);
		panel.add(btnClose);
		
		
		
		
		
	}

	public JTextField getTextFieldNom() {
		return textFieldNom;
	}

	public void setTextFieldNom(JTextField textFieldNom) {
		this.textFieldNom = textFieldNom;
	}

	public JTextField getTextFieldPro() {
		return textFieldPro;
	}

	public void setTextFieldPro(JTextField textFieldPro) {
		this.textFieldPro = textFieldPro;
	}

	public JTextField getTextFieldIva() {
		return textFieldIva;
	}

	public void setTextFieldIva(JTextField textFieldIva) {
		this.textFieldIva = textFieldIva;
	}

	public JTextField getTextFieldPrec() {
		return textFieldPrec;
	}

	public void setTextFieldPrec(JTextField textFieldPrec) {
		this.textFieldPrec = textFieldPrec;
	}

	public JTextField getTextFildCan() {
		return textFildCan;
	}

	public void setTextFildCan(JTextField textFildCan) {
		this.textFildCan = textFildCan;
	}

	public JTextArea getTextDesc() {
		return textDesc;
	}

	public void setTextDesc(JTextArea textDesc) {
		this.textDesc = textDesc;
	}

	public Supplier getProveedorSeleccionado() {
		return proveedorSeleccionado;
	}

	public void setProveedorSeleccionado(Supplier proveedorSeleccionado) {
		this.proveedorSeleccionado = proveedorSeleccionado;
	}
	
	
}
